﻿//#include<iostream>
//using namespace std;
////1.创建vector
//#include <vector> // 头⽂件
//const int N = 20;
//struct node
//{
//	int a, b, c;
//};
//void init()
//{
//	vector<int> a1; // 创建⼀个空的可变⻓数组
//    vector<int> a2(N); // 指定好了⼀个空间，⼤⼩为 N
//    vector<int> a3(N, 10); // 创建⼀个⼤⼩为 N 的 vector，并且⾥⾯的所有元素都是 10
//    vector<int> a4 = {1, 2, 3, 4, 5}; // 使⽤列表初始化，创建⼀个 vector
//    // <> ⾥⾯可以放任意的类型，这就是模板的作⽤，也是模板强⼤的地⽅
//    // 这样，vector ⾥⾯就可以放我们接触过的任意数据类型，甚⾄是 STL
//    vector<string> a5; // 放字符串
//    vector<node> a6; // 放⼀个结构体
//    vector<vector<int>> a7; // 甚⾄可以放⼀个⾃⼰，当成⼀个⼆维数组来使⽤。并且每⼀维都是可变的
//    vector<int> a8[N]; // 创建 N 个 vector
//}
////2.size/empty
//void test_size()
//{
//    // 创建⼀个⼀维数组
//    vector<int> a1(6, 8);
//    for (int i = 0; i < a1.size(); i++)
//    {
//        cout << a1[i] << " ";
//    }
//    cout << endl << endl;
//    // 创建⼀个⼆维数组
//    vector<vector<int>> a2(3, vector<int>(4, 5));
//    for (int i = 0; i < a2.size(); i++)
//    {
//        // 这⾥的 a2[i] 相当于⼀个 vector<int> a(4, 5)
//        for (int j = 0; j < a2[i].size(); j++)
//        {
//            cout << a2[i][j] << " ";
//        }
//        cout << endl;
//    }
//    cout << endl << endl;
//}
//
////3.begin/end
//void test_it()
//{
//    vector<int> a(10, 1);
//    // 迭代器的类型是 vector<int>::iterator，但是⼀般使⽤ auto 简化
//    for (auto it = a.begin(); it != a.end(); it++)
//    {
//   cout << *it << " ";
//    }
//    cout << endl << endl;
//    //范围 for 遍历
//    for (auto x : a)
//    {
//        cout << x << " ";
//    }
//    cout << endl << endl;
//}
////4.push_back/pop_back
//void print(vector<int>& a)
//{
//    for (auto x : a)
//    {
//        cout << x << " ";
//    }
//    cout << endl;
//}
//
//void test_io()
//{
//    vector<int> a;
//    // 尾插 1 2 3 4 5
//    a.push_back(1);
//    a.push_back(2);
//    a.push_back(3);
//    a.push_back(4);
//    a.push_back(5);
//    print(a);
//    // 尾删 3 次
//    a.pop_back();
//    a.pop_back();
//    a.pop_back();
//    print(a);
//}
////5.front/back 
//void test_fb()
//{
//    vector<int> a(5);
//    for (int i = 0; i < 5; i++)
//    {
//        a[i] = i + 1;
//    }
//    cout << a.front() << " " << a.back() << endl;
//}
////6.resize
//void print(vector<int>& a)
//{
//    for (auto x : a)
//    {
//        cout << x << " ";
//    }
//    cout << endl;
//}
//// 6. resize
//void test_resize()
//{
//    vector<int> a(5, 1);
//    a.resize(10); // 扩⼤
//    print(a);
//    a.resize(3); // 缩⼩
//    print(a);
//}
////7.clear
//void print(vector<int>& a)
//{
//    for (auto x : a)
//    {
//        cout << x << " ";
//    }
//    cout << endl;
//}
//// 7. clear
//void test_clear()
//{
//    vector<int> a(5, 1);
//    print(a);
//    a.clear();
//    cout << a.size() << endl;
//    print(a);
//}
//
//#include<iostream>
//using namespace std;
//#include<vector>
//const int N = 2e6 + 10;
//int main()
//{
//	vector<int>a(N);
//	int n, m;
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	while(m--)
//	{
//		int x;
//		cin >> x;
//		cout << a[x] << endl;
//	}
//	return 0;
//}


//const int N = 1e5 + 10;
//vector<int>s[N];
//int main()
//{
//	int n, q;
//	cin >> n >> q;
//	while (q--)
//	{
//		int a;
//		int b;
//		int c;
//		int d;
//		cin >> a>>b>>c;
//		if (a == 1)
//		{
//			cin >> d;
//			if (s[b].size() <= c)
//			{
//				s[b].resize(c + 1);
//			}
//			s[b][c] = d;
//		}
//		else
//		{
//			cout << s[b][c] << endl;
//		}
//
//	}
//}

#include<iostream>
using namespace std;
#include<vector>
const int N = 30;
vector<int>p[N];
typedef pair<int, int> PII;
void clean(int x, int y)
{
	for (int j = y + 1; j < p[x].size(); j++)
	{
		int t = p[x][j];
		p[t].push_back(t);
	}
	p[x].resize(y + 1);
}
	
PII find(int x)
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < p[i].size(); j++)
		{
			if(p[i][j]==x)
				{
					return {i,j};
				}
		}
	}
}

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		p[i].push_back(i);
	}
	string op1, op2;
	int a, b;
	while (cin >> op1 >> a >> op2 >> b)
	{
		PII a1 = find(a);
		int x1 = a1.first, int y1= a1.second;
		PII a2 = find(b);
		int x2 = a1.first, int y2 = a1.second;
		if (x1 == x2)
		{
			continue;
		}
		if (op1 == "move")
		{
			clean(x1, y1);
		}
		if (op2 == "onto")
		{
			clean(x2, y2);
		}
		move(x1, y1, x2);
	}


}
